import { login } from '@/api/user'
import storage from '@/utils/storage'
export default {
  namespaced: true,
  state: {
    token: storage.getItem('token')
  },
  mutations: {
    SET_TOKEN(state, payload) {
      state.token = payload
    }
  },
  actions: {
    login({ commit }, userInfo) {
      return new Promise((resolve, reject) => {
        login(userInfo)
          .then((res) => {
            // 把token 存到state中
            commit('SET_TOKEN', res.token)
            // 把token 存到本地存储
            storage.setItem('token', res.token)
            resolve()
          })
          .catch((err) => {
            reject(err)
          })
      })
    }
  }
}

// 同步： components --> commit --> mutations --> state --> render --> components
// 异步： components --> dispatch --> actions --> commit --> mutations --> state --> render --> components

// vuex 中的数据可以使用在多个组件中，但是刷新数据就丢失了
// 本地存储 可以永久存储数据，但是无法监听到数据的变化
